﻿Imports System.Reflection

Namespace Load

    ''' <summary>
    ''' クエリールートインターフェイス
    ''' </summary>
    ''' <typeparam name="T">インターフェイスを実装している型（ビルダーパターン用）</typeparam>
    ''' <remarks>クエリーの実行方法設定</remarks>
    Public Interface IQueryRoot(Of T)

        ''' <summary>
        ''' クエリー設定を初期状態に戻します
        ''' </summary>
        ''' <remarks></remarks>
        Sub ResetQueryType()

        ''' <summary>
        ''' バッチで実行します
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Function Batch() As T

        ''' <summary>
        ''' イテレートで実行します
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Function Iterate() As T

        ''' <summary>
        ''' 指定された階層までカスケードして実行します
        ''' </summary>
        ''' <param name="level"></param>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Function Cascade(level As Integer) As T

        ''' <summary>
        ''' カスケード無制限で実行します
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Function FullCascade() As T

        ''' <summary>
        ''' 内部結合のみで実行します
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Function InnerOnly() As T

        ''' <summary>
        ''' 外部結合を含んで実行します
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Function IncludeOuter() As T

    End Interface

End Namespace

